/*
Java board game library.
Copyright (C) 2011  Deepesh Garg

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
*/

package d.g.boardgames.chess;

import d.g.boardgames.*;
import d.g.boardgames.chess.ChessCellState.PieceType;

public class ChessMove {
	public enum Casteling {NONE, KING_SIDE, QUEEN_SIDE};
	private Casteling casteling = Casteling.NONE;
	Cell fromCell;
	Cell toCell;
	PieceType pawnPromotion = null;
	
	public ChessMove () {
		
	}
	
	public ChessMove (Cell fromCell, Cell toCell) {
		this.fromCell = fromCell;
		this.toCell = toCell;
	}
	
	public ChessMove (Casteling casteling) {
		this.casteling = casteling;
	}

	public Cell getFromCell() {
		return fromCell;
	}

	public void setFromCell(Cell fromCell) {
		this.fromCell = fromCell;
	}

	public Cell getToCell() {
		return toCell;
	}

	public void setToCell(Cell toCell) {
		this.toCell = toCell;
	}
	
	public Casteling getCasteling () {
		return casteling;
	}
	
	public void setCasteling(Casteling casteling) {
		this.casteling = casteling;
	}
	
	public PieceType getPawnPromotion() {
		return pawnPromotion;
	}

	public void setPawnPromotion(PieceType pawnPromotion) {
		this.pawnPromotion = pawnPromotion;
	}

	public String toString () {
		String retVal = "";
		if (fromCell != null) {
			retVal += fromCell + " ";
		}
		if (toCell != null) {
			retVal += toCell;
		}
		if (casteling == Casteling.KING_SIDE) {
			retVal += "Kingside Casteling" ;
		}
		if (casteling == Casteling.QUEEN_SIDE) {
			retVal += "Queenside Casteling" ;
		}
		return retVal ;
	}	
}
